import { loginAPI } from "@/api/user"
import { getToken, removeToken, setToken } from "@/utils/auth"

export default {
  namespaced: true,
  // 数据状态 响应式 data
  state: {
    token: getToken() || ''
  },
  // 同步修改 Vuex架构黄总 有且只有一种提交mutation
  mutations: {
    setToken(state, newToken) {
      state.token = newToken
      // 本地也存一个token
      setToken(newToken)
    },
    clearUserInfo(state) {
      // 初始化token
      state.token = ''
      removeToken()
    }
  },
  // 异步 接口请求 + 提交mutation
  actions: {
    async asyncLogin(ctx,{ username, password }) {
      // 1. 调用登录接口
      const res = await loginAPI({ username, password })
      // 2. 提交mutation
      ctx.commit('setToken', res.data.token)
    }
  }
}
